emit QScreen::geometryChanged when the logical DPI changes
authorDebian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Wed, 28 Oct 2020 18:53:04 +0000 (18:53 +0000)
committerDmitry Shachnev <mitya57@debian.org>
Wed, 28 Oct 2020 18:53:04 +0000 (18:53 +0000)
Origin: upstream, https://code.qt.io/cgit/qt/qtbase.git/commit/?id=5c7307775d32ae0a
Last-Update: 2020-09-30

Add the missing call to QScreenPrivate::emitGeometryChangeSignals()
along with an emission of physicalDotsPerInchChanged()
since that is calculated from geometry and physical size.

Rearrange the code in
QGuiApplicationPrivate::processScreenGeometryChange()
to prevent duplicate emissions of geometryChanged(),
physicalDotsPerInchChanged() which this change would introduce.

Gbp-Pq: Name emit_geometry_changed.diff

src/gui/kernel/qguiapplication.cpp
src/gui/kernel/qscreen.cpp

index 239a78313c55ccf3a7301e0aebf1f44b84fc9ed0..ef0906058196d11f26a338375ab4d936c595340c 100644 (file)
@@ -3162,13 +3162,14 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP
     bool availableGeometryChanged = e->availableGeometry != s->d_func()->availableGeometry;
     s->d_func()->availableGeometry = e->availableGeometry;
 
-    if (geometryChanged) {
-        Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
+    const Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
+    if (geometryChanged)
         s->d_func()->updatePrimaryOrientation();
 
-        emit s->geometryChanged(s->geometry());
+    s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged);
+
+    if (geometryChanged) {
         emit s->physicalSizeChanged(s->physicalSize());
-        emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch());
         emit s->logicalDotsPerInchChanged(s->logicalDotsPerInch());
 
         if (s->primaryOrientation() != primaryOrientation)
@@ -3178,8 +3179,6 @@ void QGuiApplicationPrivate::processScreenGeometryChange(QWindowSystemInterfaceP
             updateFilteredScreenOrientation(s);
     }
 
-    s->d_func()->emitGeometryChangeSignals(geometryChanged, availableGeometryChanged);
-
     resetCachedDevicePixelRatio();
 }
 
index df628fcc73a10cc9c680c03eee9d7a1c3165429c..a1afc1ba143b1ce21a3397208dc76481c9096a23 100644 (file)
@@ -88,6 +88,9 @@ void QScreenPrivate::updateGeometriesWithSignals()
 void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availableGeometryChanged)
 {
     Q_Q(QScreen);
+    if (geometryChanged)
+        emit q->geometryChanged(geometry);
+
     if (availableGeometryChanged)
         emit q->availableGeometryChanged(availableGeometry);
 
@@ -96,6 +99,9 @@ void QScreenPrivate::emitGeometryChangeSignals(bool geometryChanged, bool availa
         for (QScreen* sibling : siblings)
             emit sibling->virtualGeometryChanged(sibling->virtualGeometry());
     }
+
+    if (geometryChanged)
+        emit q->physicalDotsPerInchChanged(q->physicalDotsPerInch());
 }
 
 void QScreenPrivate::setPlatformScreen(QPlatformScreen *screen)